﻿/* $HeadURL: http://ws201075/svn/deg/dotNet/trunk/Pegasus/src/HostApplicationForm.cs $
-----------------------------------------------------------------------------
        (c) by Martin Blankenstein

Dieses Dokument und die hierin enthaltenen Informationen unterliegen
dem Urheberrecht und duerfen ohne die schriftliche Genehmigung des
Herausgebers weder als ganzes noch in Teilen dupliziert oder reproduziert
noch manipuliert werden.

-----------------+------------------------------------------------------------
Version          : $Revision: 450 $
-----------------+------------------------------------------------------------
Last Change      : $LastChangedDate: 2009-02-23 18:26:54 +0100 (Mo, 23 Feb 2009) $
-----------------+------------------------------------------------------------
Last User        : $LastChangedBy: NLBERLIN\mblankenstein $
-----------------+------------------------------------------------------------
Beschreibung     :
-----------------+ 

-----------------+------------------------------------------------------------
Updates          :
-----------------+

$Id: HostApplicationForm.cs 450 2009-02-23 17:26:54Z NLBERLIN\mblankenstein $

*/

using System;
using PaintTogetherClient.Messages.Portal;

namespace PaintTogetherClient.Contracts
{
    /// <summary>
    /// GUI für den PaintTogetherClient
    /// </summary>
    public interface IPtClientPortal
    {
        /// <summary>
        /// Aufforderung den Malbereich in einer Bildatei zu speichern
        /// </summary>
        event Action<TakePictureRequest> OnRequestTakePicture;

        /// <summary>
        /// Information das Anwendung beendet wird
        /// </summary>
        event Action<CloseMessage> OnClientClose;

        /// <summary>
        /// Anwender hat einen Punkt bemalt
        /// </summary>
        event Action<PaintSelfMessage> OnPaintSelf;
        
        /// <summary>
        /// Initialisiert die GUI
        /// </summary>
        /// <param name="message"></param>
        void ProcessInitPortalMessage(InitPortalMessage message);

        /// <summary>
        /// Übermalt den angegeben Punkt in der Anzeige
        /// </summary>
        /// <param name="message"></param>
        void ProcessPaintedMessage(PaintedMessage message);

        /// <summary>
        /// Informiert den Anwender über den Verlust der Serververbindung
        /// </summary>
        /// <param name="message"></param>
        void ProcessServerClosedMessage(ServerClosedMessage message);

        /// <summary>
        /// Fügt einen neuen Beteiligten in der GUI-Liste hinzu
        /// </summary>
        /// <param name="message"></param>
        void ProcessAddAliasMessage(AddAliasMessage message);

        /// <summary>
        /// Entfernt einen Beteiligten aus der GUI-Liste
        /// </summary>
        /// <param name="message"></param>
        void ProcessRemoveAliasMessage(RemoveAliasMessage message);
    }
}
